The unauthorized copying of proprietary computer programs in the personal computer market is a widespread problem resulting in a considerable amount of lost sales for software houses. The bulk of these losses is due not to professional piracy, but rather to private individuals making a few copies of a program on their own computer for the use of their friends. Inasmuch as such private misuses are practically impossible to detect and control, it is desirable to so encode a program that it can detect whether it is an original or a copy, and to refuse to function if it finds itself to be a copy.
Various schemes have previously been proposed for this purpose. In general, these schemes can be divided into two groups: coding techniques and ambiguity techniques. The former are schemes which cause copied data to be different from the original data. These schemes require little or no special hardware to implement, but inquisitive users are likely to sooner or later discover the data discrepancy and correct it. An example of such a coding technique is described in U.S. Pat. No. 4,462,078 to Ross.
The ambiguity technique requires special hardware and is therefore more expensive to implement. On the other hand, it is immune to being defeated by the user. The ambiguity technique relies on the deliberate creation of ambiguous data which will produce inconsistent readouts during successive read operations. When a disc is copied, the data read during the copying pass will be unambiguously recorded on the copy, and successive read operations of the data on the copy will produce consistent readouts. It is an easy matter to so structure the program that it will perform a large number of successive read operations on the ostensibly ambiguous data and to stop program execution if all readouts of that data are the same.
It has previously been proposed to create this ambiguity by mechanical methods such as impairing the quality of the magnetic medium of the disc in selected areas, or by electronic methods such as recording data with varying amounts of write current. The former method is impractical to execute accurately in mass production; the latter is simple to execute but is also subject to being defeated at relatively small cost by determined users with a modicum of engineering ability.
Consequently, a need exists for a copy protection scheme of the ambiguity type which can be electronically implemented yet is difficult even for fairly sophisticated personal computer users to defeat.